package com.luofan.mapper;

import com.luofan.common.result.ResultCodeEnum;
import com.luofan.entity.dto.ArchiveQueryDTO;
import com.luofan.entity.dto.StatisticsDTO;
import com.luofan.entity.po.Archive;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.luofan.entity.vo.ArchiveVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 档案表 Mapper 接口
 * </p>
 *
 * @author 
 * @since 2025-03-26
 */
@Mapper
public interface ArchiveMapper extends BaseMapper<Archive> {

    //根据档案收集任务id和用户id获取档案信息
    ArchiveVO getArchiveByCollectIdAndUserId(@Param("collectId") Long collectId, @Param("userId") Long userId);

    //教师修改档案(已通过审核不能修改)
    ResultCodeEnum updateArchiveById(Archive archive);

    //根据条件 分页获取档案信息
    List<ArchiveVO> listArchiveByCondition(ArchiveQueryDTO archiveQueryDTO);

    //根据教师id获取其每个所属档案的提交所需时间，是否逾期提交，质量评分
    List<StatisticsDTO> statisticsByUserId(@Param("userId") Long userId);

    //根据档案收集任务id获取其每个所属档案的提交所需时间，是否逾期提交，质量评分
    List<StatisticsDTO> statisticsByCollectId(@Param("collectId") Long collectId);

    //根据教研室id和学期id获取其每个所属档案的提交所需时间，是否逾期提交，质量评分
    List<StatisticsDTO> statisticsBySectionIdAndTermId(@Param("sectionId") Long sectionId, @Param("termId") Long termId);

    //根据学期id获取其每个所属档案的提交所需时间，是否逾期提交，质量评分
    List<StatisticsDTO> statisticsByTermId(@Param("termId") Long termId);

    //根据用户id和档案收集任务id获取档案信息(状态,提交时间)
    Archive getArchiveByUserIdAndCollectId(@Param("userId") Long userId, @Param("collectId") Long collectId);

    //将档案设置为已提交
    int updateStatusById(@Param("collectId") Long collectId, @Param("userId") Long userId);

    //教研室主任 审核档案
    int checkArchive(Archive archive);

    //通过任务id和用户id获取档案数量
    int countByCollectIdAndUserId(@Param("collectId") Long collectId, @Param("userId") Long userId);

    //修改原有档案信息
    int updateArchive(@Param("archive") Archive archive, @Param("collectId") Long collectId, @Param("userId") Long userId);
}
